package com.xtt._02_guava;

import com.google.common.base.Preconditions;
import org.junit.Test;

/**
 * @Author xtt.
 * @Description: 入参校验
 * @Date:Create in 2017/9/19 0019 下午 22:27
 * @Modify By:
 */
public class PreConditionsTest {

    @Test
    public void testPreConditions() {
        getPerson("",10);
        getPerson(null,100);//java.lang.NullPointerException: name不能未null
        //getPerson("566",0);
    }

    public void getPerson(String name, Integer age) {
        Preconditions.checkNotNull(name,"name不能未null");
        Preconditions.checkArgument(age > 0,"age不能小于0");
    }

    /*
    * Preconditions里面的方法：

　　1 .checkArgument(boolean) ：
　　功能描述：检查boolean是否为真。 用作方法中检查参数
　　失败时抛出的异常类型: IllegalArgumentException

　　2.checkNotNull(T)：
　　功能描述：检查value不为null， 直接返回value；
　　失败时抛出的异常类型：NullPointerException

　　3.checkState(boolean)：
　　功能描述：检查对象的一些状态，不依赖方法参数。 例如， Iterator可以用来next是否在remove之前被调用。
　　失败时抛出的异常类型：IllegalStateException

　　4.checkElementIndex(int index, int size)：
　　功能描述：检查index是否为在一个长度为size的list， string或array合法的范围。 index的范围区间是[0, size)(包含0不包含size)。无需直接传入list， string或array， 只需传入大小。返回index。
　　失败时抛出的异常类型：IndexOutOfBoundsException


　　5.checkPositionIndex(int index, int size)：
　　功能描述：检查位置index是否为在一个长度为size的list， string或array合法的范围。 index的范围区间是[0， size)(包含0不包含size)。无需直接传入list， string或array， 只需传入大小。返回index。
　　失败时抛出的异常类型：IndexOutOfBoundsException

　　6.checkPositionIndexes(int start, int end, int size)：
　　功能描述：检查[start, end)是一个长度为size的list， string或array合法的范围子集。伴随着错误信息。
　　失败时抛出的异常类型：IndexOutOfBoundsException
*/
}
